package com.operator.Activitys.activity;

import android.content.Intent;
import android.graphics.Color;
import android.net.Uri;
import android.provider.Settings;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

import com.afollestad.materialdialogs.DialogAction;
import com.afollestad.materialdialogs.MaterialDialog;
import com.google.gson.Gson;
import com.operator.Activitys.R;
import com.operator.Activitys.activity.base.BaseActivity;
import com.operator.Activitys.bean.InspectUpdateBean;
import com.operator.Activitys.utils.Constant;
import com.operator.Activitys.utils.FileUtils;
import com.operator.Activitys.utils.JumperUtils;
import com.operator.Activitys.utils.StringUtils;
import com.operator.Activitys.utils.ToastUtils;
import com.operator.Activitys.utils.UpdateAPKUtils;
import com.zhy.autolayout.AutoRelativeLayout;

import org.simple.eventbus.EventBus;

import butterknife.Bind;
import butterknife.OnClick;

/**
 * 项目名称：金泽云 手机app
 * 类描述：设置页面
 * 创建人：张飞祥
 * 创建时间：2018/6/14 13:07
 * 修改人：张飞祥
 * 修改时间：2018/6/14 13:07
 * 修改备注：
 */
public class SetUpActivity extends BaseActivity {

    //返回按钮
    @Bind(R.id.iv_return)
    ImageView ivReturn;
    //标题
    @Bind(R.id.tv_title)
    TextView tvTitle;
    //标题总布局
    @Bind(R.id.app_bar_layout)
    AutoRelativeLayout appBarLayout;
    //更新小红点
    @Bind(R.id.iv_update_new)
    ImageView ivUpdateNew;
    //新版本号 显示文字
    @Bind(R.id.tv_update_number)
    TextView tvUpdateNumber;

    //APP 检查更新 实体类
    private InspectUpdateBean inspectUpdate = null;
    //本地 版本号
    private int versionCode;
    //本地 版本名称
    private String versionName;
    //更新内容
    private String content = "";

    @Override
    protected void initUI() {
        setContentView(R.layout.act_set_up);
        //设置标题
        tvTitle.setText("设置");
        //显示返回按钮
        ivReturn.setVisibility(View.VISIBLE);
        //设置状态栏 背景颜色
        appBarLayout.setBackgroundResource(R.color.color_bg_blue);
    }

    @Override
    protected void initData() {
       /**
        * 创建 Gson 解析 实体类
        */
        Gson gson = new Gson();
        //TODO 解析 APP检查更新 实体
        inspectUpdate = gson.fromJson(mACache.getAsJSONObject(Constant.CACHE_APP_UPDATE) + "", InspectUpdateBean.class);

        /**
         * 判断 是否显示 检查更新小红点
         */
        //获取 本地 版本号
        versionCode = FileUtils.getLocalVersion(this);
        //获取 本地 版本名称
        versionName = FileUtils.getLocalVersionName(this);
        //TODO 业务逻辑判断
        if (inspectUpdate != null) {
            if (inspectUpdate.getVersionCode() > versionCode)
                //显示 检查更新按钮出现小红点
                ivUpdateNew.setVisibility(View.VISIBLE);
            else
                //隐藏 检查更新出现小红点
                ivUpdateNew.setVisibility(View.GONE);

            if (inspectUpdate.getRemark() != null && !"".equals(inspectUpdate.getRemark()))
                //获取更新内容
                content = StringUtils.isStrIntercept(inspectUpdate.getRemark(), "。");
        }

        //TODO 设置检查更新版本号 文字
        String updateStr = " （版本号：v " + versionName + "）";
        tvUpdateNumber.setText(updateStr);
    }

    /**
     * 按钮点击事件
     *
     * @param view
     */
    @OnClick({R.id.iv_return, R.id.btn_shop_pwd, R.id.btn_shop_pay_manage,
            R.id.layout_update,R.id.btn_shop_app_msg, R.id.btn_exit_login})
    public void onClick(View view) {
        switch (view.getId()) {

            case R.id.iv_return:            //返回按钮
                finish();
                break;

            case R.id.btn_shop_pwd:         //修改密码
                JumperUtils.JumpTo(this, PwdUpdateActivity.class);
                break;

            case R.id.btn_shop_pay_manage:  //支付管理
                JumperUtils.JumpTo(this, PayManageActivity.class);
                break;

            case R.id.layout_update:        //apk 下载
                if (inspectUpdate.getVersionCode()!=0 && inspectUpdate.getVersionCode()>versionCode){
                    MaterialDialog updateApkMsg = new MaterialDialog.Builder(this)
                            .title("更新")
                            .titleColor(Color.parseColor("#EC5B5B"))
                            .content("新版本：v "+inspectUpdate.getVersion()+"\n\n"+content)
                            .negativeText("取消")
                            .negativeColor(Color.parseColor("#EC5B5B"))
                            .positiveText("立即更新")
                            .positiveColor(Color.parseColor("#EC5B5B"))
                            .onPositive(new MaterialDialog.SingleButtonCallback() {
                                @Override
                                public void onClick(MaterialDialog dialog, DialogAction which) {
                                    //执行开始新下载 最新版本APK
                                    UpdateAPKUtils.initDownLoadAPK(SetUpActivity.this
                                            ,inspectUpdate.getDownLoadUrl(),inspectUpdate.getVersion());
                                    //通过浏览器去下载APK
//                                    InstallUtils.installAPKWithBrower(SetUpActivity.this,
//                                            inspectUpdate.getDownLoadUrl());
                                }
                            }).show();
                    // 设置点击屏幕Dialog不消失
                    updateApkMsg.setCanceledOnTouchOutside(false);
                    //取消Back键监听
                    updateApkMsg.setCancelable(false);
                }else{
                    ToastUtils.showShort(SetUpActivity.this, "当前已是最新版本！");
                }
                break;

            case R.id.btn_shop_app_msg:     //应用信息
                Intent intent = new Intent();
                intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
                Uri uri = Uri.fromParts("package", this.getPackageName(), null);
                intent.setData(uri);
                startActivity(intent);
                break;

            case R.id.btn_exit_login:       //退出登录
                // 提示 dialog
                MaterialDialog msgDialog = new MaterialDialog.Builder(this)
                        .title("退出")
                        .titleColor(Color.parseColor("#EC5B5B"))
                        .content("您确认要退出当前账号吗？")
                        .negativeText("取消")
                        .negativeColor(Color.parseColor("#EC5B5B"))
                        .positiveText("确认")
                        .positiveColor(Color.parseColor("#EC5B5B"))
                        .onPositive(new MaterialDialog.SingleButtonCallback() {
                            @Override
                            public void onClick(MaterialDialog dialog, DialogAction which) {
                                //通知主页面 退出
                                JumperUtils.JumpTo(SetUpActivity.this, LoginActivity.class);
                                //通知主页面退出操作
                                EventBus.getDefault().post("", Constant.BUS_EXIT_MAIN);
                                //销毁当前页面
                                finish();
                            }
                        }).show();
                // 设置点击屏幕Dialog不消失
                msgDialog.setCanceledOnTouchOutside(false);
                //取消Back键监听
                msgDialog.setCancelable(false);
                break;
        }
    }
}
